--
-- Created by IntelliJ IDEA.
-- User: PC
-- Date: 15-7-13
-- Time: 上午10:51
-- To change this template use File | Settings | File Templates.
--
SERVER_GRAY = 1  --服务器维护  灰色
SERVER_GREEN = 2  --可以使用    绿色 服务器负载低
SERVER_YELLOW = 3  --可以使用    黄色 服务器负载中
SERVER_RED = 4  --可以使用    红色 服务器暴漫

--服务器列表
local m_serverList = nil
local m_serverDic = nil

--最近登陸過的服務器列表
local m_recentIdList = nil
local m_wait = nil
local m_recentUseList = nil

local errorCall = function()
    local funcOk = function()
        --cc.Director:getInstance():endToLua()              --退出游戏
        os.exit()
    end

    local dia = MessageDialog:show("服务器列表获取失败",funcOk,nil,true)
    dia:oneOkButton()
end

local arrToDic = function()
    m_serverDic = {}

    for _, serverData in ipairs(m_serverList) do
        m_serverDic[serverData.id] = serverData
    end
end

--保存最近登陆的服务器id
function saveRecent(serverId)
    if not m_serverList or not m_serverDic then
        return
    end

    --如果id 在列表里面没有
    if not m_serverDic[serverId] then
        return
    end

    --判断这个货是否以前就有   有的话先remove  然后放到最前面
    for i, id in ipairs(m_recentIdList) do
        if id == serverId then
            table.remove(m_recentIdList, i)
            break
        end
    end

    table.insert(m_recentIdList, 1, serverId)
    cc.UserDefault:getInstance():setStringForKey("recentList", do_serialize(m_recentIdList))
    cc.UserDefault:getInstance():flush()
end

--保存最近登陆的服务器的用户名和密码
function saveUserInfo(serverId, useName, password)
    --如果id 在列表里面没有
    if not m_serverDic[serverId] then
        return
    end

    local v = {}
    v.useName = useName
    v.password = password

    m_recentUseList[serverId] = v
    cc.UserDefault:getInstance():setStringForKey("useList", do_serialize(m_recentUseList))
    cc.UserDefault:getInstance():flush()
end

--保存最近登陆的服务器的用户名和密码
function getUserInfo(serverId)
    --如果id 在列表里面没有
    if not m_serverDic[serverId] then
        return
    end

    if not m_recentUseList or not m_recentUseList[serverId]then
        return
    end

    return m_recentUseList[serverId].useName, m_recentUseList[serverId].password
end

function getServerInfo(serverId) 
	return m_serverDic[serverId]
end


--获得最近登陆的服务器列表
function getRecentList()
    if not m_serverList then
        return
    end

    local m_recentList = {}

    --判断这个货是否以前就有   有的话先remove  然后放到最前面
    for i, id in ipairs(m_recentIdList) do
        if m_serverDic[id] then
            table.insert(m_recentList, m_serverDic[id])
        end
    end

    if 0 == #m_recentList then
        table.insert(m_recentList, m_serverDic[#m_serverList])
    end

    return m_recentList
end

--获得排好序的所有服务器列表
function getSortAllList()
    if not m_serverList then
        return {}
    end 
   return m_serverList
end 
--获取版本列表
function getServerList(callback)
    --本地数据获取最近的服务器列表

    local xhr = cc.XMLHttpRequest:new()
    xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING 
	local url = ''; 
	if gd_testmode == '' then  
	    --姑且当做走的是PP正式版本服务器列表吧
		--url = 'http://192.168.5.215:8008/godslie/versionpp/serverlist.json';--杰爷的
		url = 'http://list.zs.9yuonline.com/godslie/versionpp/serverlist.json';
	else 
		url = 'http://218.18.232.38:8000/godslie/version' .. gd_testmode .. '/serverlist.json';
	end
    xhr:open("GET",url);
    local function onReadyStateChange()
        if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then
            print("xhr.response____________", xhr.response)
            m_serverList = json.decode(xhr.response)
            arrToDic()
			m_recentIdList = cc.UserDefault:getInstance():getStringForKey("recentList")
            m_recentUseList = cc.UserDefault:getInstance():getStringForKey("useList")

            m_recentUseList = ("" ~= m_recentUseList) and unserialize(m_recentUseList) or {}
            m_recentIdList = ("" ~= m_recentIdList) and unserialize(m_recentIdList) or {m_serverList[#m_serverList].id}
            callback()
            --print("xhr.response____________", serialize(m_serverList))
            --print("xhr.response____________", serialize(m_serverDic))
        else
            --弹出框
            errorCall()
        end

        if m_wait then
            m_wait:removeFromParent();
            m_wait=nil;
        end
    end
    xhr:registerScriptHandler(onReadyStateChange)
    xhr:send()
    print("获取服务器列表")
    if not m_wait then
        m_wait=WaitingDialog:showWaiting('正在通信中...');
    end
end

